iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0
Software Development

Python之虛擬貨幣API實作系列 第 9

Day9 開始實作-CSV格式儲存虛擬貨幣資料

  • 分享至 

  • xImage
  •  

我們透過畢安api得到彼特畢歷史價格數據,將數據儲存到CSV檔案。

透過這個下列函數,我們選用BTCUSDT當作要查看的幣種,並將時間以"一天"為單位,還有其他可用的時間單位可作為查詢。

# valid intervals - 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M
client._get_earliest_valid_timestamp('BTCUSDT', '1d')

接下來,我們調用歷史數據。我們需要再次通過符號和變數。此外,還需要開始日期,為此我們使用了時間戳變數。

最後,預設情況下,此函數調用最後 500 個數據點。最大值為 1000,因此我們將限制增加到最大值。

在後台,此終端節點將在迴圈中連續查詢 API,一次收集 1000 個價位,直到返回從起點到今天的所有數據。

bars = client.get_historical_klines('BTCUSDT', '1d', timestamp, limit=1000)

這是根據文件上返回的數據定義

我們利用了它,只保存了前五列:日期,開盤,高,低,關閉。
或者,如果您不需要其他列,也可以將其刪除,如下所示:

for line in bars:
        del line[5:]

最後我們把資料存到csv裡面。
日期列已設置為索引,使其成為時間序列索引數據幀。這樣,以後可以更輕鬆地根據時間範圍進行操作。

    btc_df = pd.DataFrame(bars, columns=['date', 'open', 'high', 'low', 'close'])
    btc_df.set_index(['date'], inplace=True)
    print(btc_df.head())
    btc_df.to_csv('binance_demo.csv')

這邊附上完整的程式碼

import os
import csv
from binance.client import Client

api_key = os.environ.get('binance_api')
api_secret = os.environ.get('binance_secret')
client = Client(api_key, api_secret)

# valid intervals - 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M
timestamp = client._get_earliest_valid_timestamp('BTCUSDT', '1d')

bars = client.get_historical_klines('BTCUSDT', '1d', timestamp, limit=500)
with open('binance_demo.csv', 'w', newline='') as f:
    for line in bars:
        del line[5:]
    btc_df = pd.DataFrame(bars, columns=['date', 'open', 'high', 'low', 'close'])
    btc_df.set_index(['date'], inplace=True)
    print(btc_df.head())
    btc_df.to_csv('binance_demo.csv')

這是寫入csv檔的結果。

如果對於其他函示有興趣的可以參考這篇


上一篇
Day8 開始實作-WebSocket獲取最新價格
下一篇
Day10 開始實作-技術指標1
系列文
Python之虛擬貨幣API實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言